home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / tsbgex / src / win / blkcpy.asm next >
Encoding:
Assembly Source File  |  1994-11-16  |  1.6 KB  |  96 lines

  1.     assume    cs:text
  2. text    segment para public 'CODE'
  3.  
  4.     public    blkcpy16
  5. blkcpy16 proc    near
  6.     push    ebp
  7.     push    ebx
  8.     push    ecx
  9.     push    edx
  10.     push    esi
  11.     push    edi
  12.     mov    eax,36[esp]    ; eax <-- y in src
  13.     mov    ebx,40[esp]    ; ebx <-- width of src
  14.     add     ebx,ebx
  15.     mov    40[esp],ebx
  16.     mul    ebx
  17.     mov    ebp,32[esp]    ; edi <-- x in src
  18.     add    ebp,ebp
  19.     add    ebp,eax
  20.     add    ebp,28[esp]    ; ebp <-- src ptr
  21.     
  22.     mov    eax,52[esp]    ; eax <-- y in dst
  23.     mov    ebx,56[esp]    ; ebx <-- width of dst
  24.     add     ebx,ebx
  25.     mov    56[esp],ebx
  26.     mul    ebx
  27.     mov    edx,48[esp]    ; edx <-- x in dst
  28.     add    edx,edx
  29.     add    edx,eax
  30.     add    edx,44[esp]    ; edx <-- dst ptr
  31.     mov    ebx,64[esp]    ; ebx <-- height
  32.     mov    eax,60[esp]    ; eax <-- width
  33.     cld
  34. #0:
  35.     mov    esi,ebp
  36.     mov    edi,edx
  37.     mov    ecx,eax        ; ecx <-- width
  38.     rep    movsw
  39.     add    ebp,40[esp]
  40.     add    edx,56[esp]
  41.     dec    ebx
  42.     jne    SHORT #0
  43.     pop    edi
  44.     pop    esi
  45.     pop    edx
  46.     pop    ecx
  47.     pop    ebx
  48.     pop    ebp
  49.     ret
  50. blkcpy16 endp
  51.  
  52.     public    blkcpy4
  53. blkcpy4 proc    near
  54.     push    ebp
  55.     push    ebx
  56.     push    ecx
  57.     push    edx
  58.     push    esi
  59.     push    edi
  60.     mov    eax,36[esp]    ; eax <-- y in src
  61.     mov    ebx,40[esp]    ; ebx <-- width of src
  62.     mul    ebx
  63.     mov    ebp,32[esp]    ; edi <-- x in src
  64.     add    ebp,eax
  65.     add    ebp,28[esp]    ; ebp <-- src ptr
  66.     
  67.     mov    eax,52[esp]    ; eax <-- y in dst
  68.     mov    ebx,56[esp]    ; ebx <-- width of dst
  69.     mul    ebx
  70.     mov    edx,48[esp]    ; edx <-- x in dst
  71.     add    edx,eax
  72.     add    edx,44[esp]    ; edx <-- dst ptr
  73.     mov    ebx,64[esp]    ; ebx <-- height
  74.     mov    eax,60[esp]    ; eax <-- width
  75.     cld
  76. #0:
  77.     mov    esi,ebp
  78.     mov    edi,edx
  79.     mov    ecx,eax        ; ecx <-- width
  80.     rep    movsb
  81.     add    ebp,40[esp]
  82.     add    edx,56[esp]
  83.     dec    ebx
  84.     jne    SHORT #0
  85.     pop    edi
  86.     pop    esi
  87.     pop    edx
  88.     pop    ecx
  89.     pop    ebx
  90.     pop    ebp
  91.     ret
  92. blkcpy4 endp
  93.  
  94. text    ends
  95.     end
  96.